package com.example.baselibrary.utlis

import android.app.Dialog
import android.content.Context
import androidx.appcompat.app.AppCompatActivity
import com.xuexiang.xui.widget.dialog.LoadingDialog

/**
 * 加载框管理类
 * 基于XUI库实现，用于统一管理加载对话框的显示和隐藏
 */
class LoadingDialogManager private constructor() {

    private var loadingDialog: LoadingDialog? = null

    companion object {
        @Volatile
        private var instance: LoadingDialogManager? = null

        fun getInstance(): LoadingDialogManager {
            return instance ?: synchronized(this) {
                instance ?: LoadingDialogManager().also { instance = it }
            }
        }
    }

    /**
     * 显示加载对话框
     *
     * @param context 上下文
     * @param message 提示信息（可选）
     * @param cancelable 是否可以取消（默认true）
     */
    fun showLoading(context: Context, message: String? = null, cancelable: Boolean = true) {
        // 如果已有对话框显示，先隐藏
        hideLoading()

        loadingDialog = LoadingDialog(context).apply {
            setCancelable(cancelable)
            show()
        }
    }

    /**
     * 隐藏加载对话框
     */
    fun hideLoading() {
        loadingDialog?.let {
            if (it.isShowing) {
                it.dismiss()
            }
            loadingDialog = null
        }
    }

    /**
     * 检查加载对话框是否正在显示
     */
    fun isLoading(): Boolean {
        return loadingDialog?.isShowing ?: false
    }
}
